package com.xxl.job.executor.utils;

/**
 * 文件描述
 *
 * @author wang.kunlin
 * @date 2020年08月14日 15:36
 */
public class TestUtil {
    private static byte[] crc16_tbl = {
            /*  0*/ (byte) 0x0000,  (byte) 0xC0C1,  (byte) 0xC181,  (byte)0x0140,  (byte)0xC301,  (byte)0x03C0,  (byte)0x0280,  (byte)0xC241,
            /*  8*/ (byte)0xC601,   (byte)0x06C0,  (byte)0x0780,  (byte)0xC741,  (byte)0x0500,  (byte)0xC5C1,  (byte)0xC481,  (byte)0x0440,
            /* 16*/(byte) 0xCC01,   (byte)0x0CC0,  (byte)0x0D80,  (byte)0xCD41,  (byte)0x0F00,  (byte)0xCFC1,  (byte)0xCE81,  (byte)0x0E40,
            /* 24*/ (byte) 0x0A00,  (byte)0xCAC1,  (byte)0xCB81,  (byte)0x0B40,  (byte)0xC901,  (byte)0x09C0,  (byte)0x0880,  (byte)0xC841,
            /* 32*/ (byte) 0xD801,  (byte)0x18C0,  (byte)0x1980,  (byte)0xD941,  (byte)0x1B00,  (byte)0xDBC1,  (byte)0xDA81,  (byte)0x1A40,
            /* 40*/ (byte) 0x1E00,  (byte)0xDEC1,  (byte)0xDF81,  (byte)0x1F40,  (byte)0xDD01,  (byte)0x1DC0,  (byte)0x1C80,  (byte)0xDC41,
            /* 48*/(byte) 0x1400,  (byte)0xD4C1,  (byte)0xD581,  (byte)0x1540,  (byte)0xD701,  (byte)0x17C0,  (byte)0x1680,  (byte)0xD641,
            /* 56*/ (byte)0xD201,  (byte)0x12C0,  (byte)0x1380,  (byte)0xD341,  (byte)0x1100,  (byte)0xD1C1,  (byte)0xD081,  (byte)0x1040,
            /* 64*/ (byte) 0xF001,  (byte)0x30C0,  (byte)0x3180,  (byte)0xF141,  (byte)0x3300,  (byte)0xF3C1,  (byte)0xF281,  (byte)0x3240,
            /* 72*/ (byte)0x3600,  (byte)0xF6C1,  (byte)0xF781,  (byte)0x3740,  (byte)0xF501,  (byte)0x35C0,  (byte)0x3480,  (byte)0xF441,
            /* 80*/ (byte)0x3C00,  (byte)0xFCC1,  (byte)0xFD81,  (byte)0x3D40,  (byte)0xFF01,  (byte)0x3FC0,  (byte)0x3E80,  (byte)0xFE41,
            /* 88*/ (byte)0xFA01,  (byte)0x3AC0,  (byte)0x3B80,  (byte)0xFB41,  (byte)0x3900,  (byte)0xF9C1,  (byte)0xF881,  (byte)0x3840,
            /* 96*/(byte) 0x2800,  (byte)0xE8C1,  (byte)0xE981,  (byte)0x2940,  (byte)0xEB01,  (byte)0x2BC0,  (byte)0x2A80,  (byte)0xEA41,
            /*104*/(byte) 0xEE01,  (byte)0x2EC0,  (byte)0x2F80,  (byte)0xEF41,  (byte)0x2D00,  (byte)0xEDC1,  (byte)0xEC81,  (byte)0x2C40,
            /*112*/ (byte)0xE401,  (byte)0x24C0,  (byte)0x2580,  (byte)0xE541,  (byte)0x2700,  (byte)0xE7C1,  (byte)0xE681,  (byte)0x2640,
            /*120*/ (byte)0x2200,  (byte)0xE2C1,  (byte)0xE381,  (byte)0x2340,  (byte)0xE101,  (byte)0x21C0,  (byte)0x2080,  (byte)0xE041,
            /*128*/ (byte)0xA001,  (byte)0x60C0,  (byte)0x6180,  (byte)0xA141,  (byte)0x6300,  (byte)0xA3C1,  (byte)0xA281,  (byte)0x6240,
            /*136*/ (byte)0x6600,  (byte)0xA6C1,  (byte)0xA781,  (byte)0x6740,  (byte)0xA501,  (byte)0x65C0,  (byte)0x6480,  (byte)0xA441,
            /*144*/ (byte)0x6C00,  (byte)0xACC1,  (byte)0xAD81,  (byte)0x6D40,  (byte)0xAF01,  (byte)0x6FC0,  (byte)0x6E80,  (byte)0xAE41,
            /*152*/ (byte)0xAA01,  (byte)0x6AC0,  (byte)0x6B80,  (byte)0xAB41,  (byte)0x6900,  (byte)0xA9C1,  (byte)0xA881,  (byte)0x6840,
            /*160*/ (byte)0x7800,  (byte)0xB8C1,  (byte)0xB981,  (byte)0x7940,  (byte)0xBB01,  (byte)0x7BC0,  (byte)0x7A80,  (byte)0xBA41,
            /*168*/ (byte)0xBE01,  (byte)0x7EC0,  (byte)0x7F80,  (byte)0xBF41,  (byte)0x7D00,  (byte)0xBDC1,  (byte)0xBC81,  (byte)0x7C40,
            /*176*/ (byte)0xB401,  (byte)0x74C0,  (byte)0x7580,  (byte)0xB541,  (byte)0x7700,  (byte)0xB7C1,  (byte)0xB681,  (byte)0x7640,
            /*184*/(byte) 0x7200,  (byte)0xB2C1,  (byte)0xB381,  (byte)0x7340,  (byte)0xB101,  (byte)0x71C0,  (byte)0x7080,  (byte)0xB041,
            /*192*/ (byte)0x5000,  (byte)0x90C1,  (byte)0x9181,  (byte)0x5140,  (byte)0x9301,  (byte)0x53C0,  (byte)0x5280,  (byte)0x9241,
            /*200*/(byte) 0x9601,  (byte)0x56C0,  (byte)0x5780,  (byte)0x9741,  (byte)0x5500,  (byte)0x95C1,  (byte)0x9481,  (byte)0x5440,
            /*208*/ (byte)0x9C01,  (byte)0x5CC0,  (byte)0x5D80,  (byte)0x9D41,  (byte)0x5F00,  (byte)0x9FC1,  (byte)0x9E81,  (byte)0x5E40,
            /*216*/ (byte)0x5A00,  (byte)0x9AC1,  (byte)0x9B81,  (byte)0x5B40,  (byte)0x9901,  (byte)0x59C0,  (byte)0x5880,  (byte)0x9841,
            /*224*/ (byte)0x8801,  (byte)0x48C0,  (byte)0x4980,  (byte)0x8941,  (byte)0x4B00,  (byte)0x8BC1,  (byte)0x8A81,  (byte)0x4A40,
            /*232*/(byte) 0x4E00,  (byte)0x8EC1,  (byte)0x8F81,  (byte)0x4F40,  (byte)0x8D01,  (byte)0x4DC0,  (byte)0x4C80,  (byte)0x8C41,
            /*240*/ (byte)0x4400,  (byte)0x84C1,  (byte)0x8581,  (byte)0x4540,  (byte)0x8701,  (byte)0x47C0,  (byte)0x4680,  (byte)0x8641,
            /*248*/ (byte)0x8201,  (byte)0x42C0,  (byte)0x4380,  (byte)0x8341,  (byte)0x4100,  (byte)0x81C1,  (byte)0x8081,  (byte)0x4040
    };

    public static byte CRC16_calc(byte[] buf)
    {
        byte crc16 = (byte) 0xFFFF;
        int i = 0;
        int nbyte = buf.length;

        while (nbyte-- > 0)
        {
            crc16 = (byte) ((crc16 >> 8) ^ crc16_tbl[(crc16 & 0xFF) ^ buf[i]]);
            i++;
        }
        return crc16;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
//        String hexdata ="404004000102292B101A081301000000000085481BBE2C00300002020101010049460F00030800000000000000000000000000000000000000000000000000000000000000000D110C0513952323";
//        String substr = hexdata.substring(4,hexdata.length()-6);//控制单元中各字节数据(第3～27字节)及应用数据单元数据
//        String checkSum = TransUtils.hexString2binaryString(hexdata.substring(hexdata.length()-6,hexdata.length()-4));//校验和(1字节)
//        String sum= TransUtils.makeChecksums(substr);
        byte[] sendInfo = new byte[1];
        sendInfo[0] =(byte)0x3033;
        sendInfo[1] =(byte)0x0617;
        byte str = CRC16_calc(sendInfo);
        System.out.println(str);
    }




}
